﻿using AutomaticScrewLocking.types;
using System;
using System.IO;

namespace AutomaticScrewLocking.domain.localLog.service.impl
{
    public class LogServiceImpl:LogService
    {

        /// <summary>
        /// 输出本地日志
        /// </summary>
        /// <param name="msg"></param>
        public void WriteLog(string msg)
        {
            try
            {
                // 日志存储文件夹名
                string directoryName = "Log";
                // 判断日志存储文件夹是否存在
                if (!Directory.Exists(directoryName))
                {
                    Directory.CreateDirectory(directoryName);
                }

                // 日志文件名
                string logName = DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
                // 日志完整路径
                string logFullpath = Path.Combine(directoryName, logName);
                // 日志信息
                string content = DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-fff") + " : " + msg;
                // true模式是判断日志文件是否存在，不存在创建并输出日志信息，存在则续写
                using (StreamWriter sw = new StreamWriter(logFullpath, true))
                {
                    // 输出日志信息
                    sw.WriteLine(content);
                }
            }
            catch (Exception ex)
            {
                // 日志写入失败时的容错处理（避免日志功能本身抛异常影响主流程）
                GlobalDelegate.updateUiLogDelegate($"日志写入失败: {ex.Message}");
            }
        }
    }
}
